package ArraySeries;

public class MinSubArrayLenSolution_209_2 {
    public int minSubArrayLen(int target, int[] nums) {
        // 使用滑动窗口
        // 窗口大小 -- 最优子序列的长度
        // 窗口开端起始 -- 0
        // 窗口末端起始 -- for循环的指针

        int i = 0; // 窗口开端起始 -- 0
        int result = Integer.MAX_VALUE;
        int sum = 0;
        for (int j = 0; j < nums.length; j++) {
            sum = sum + nums[j];
            // 此时满足条件，窗口左端右移，尝试寻找更小的窗口
            while (sum >= target) {
                result = Math.min(result, j - i + 1);
                sum = sum - nums[i];
                i++;
            }
        }
        return result == Integer.MAX_VALUE ? 0 : result;
    }
}
